﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WorkFlowBLL;

namespace QLCF.Forms
{
    public partial class frmRange : Form
    {
        public int permission = 0;
        public frmRange()
        {
            InitializeComponent();
            permission = CtrAdmin.GetPermission(Program.UserEntity.Permission, Config.Enum.Function.frmRange);        
            BindCbxStatus();
            BindData();
            DisplayControls(false);
        }
        private void BindCbxStatus()
        {
            cbxStatus.Items.Clear();
            cbxStatus.DisplayMember = "text";
            cbxStatus.ValueMember = "value";
            List<EntityBLL.ListItem> lst1 = new List<EntityBLL.ListItem>();
            lst1.Add(new EntityBLL.ListItem(1, "Hoạt động"));
            lst1.Add(new EntityBLL.ListItem(0, "Khóa"));
            cbxStatus.DataSource = lst1;
            cbxStatus.SelectedValue = 1;            
        }
        private void BindData()
        {
            CtrTable ctrT = new CtrTable();
            dataGridView1.AutoGenerateColumns = false;           
            dataGridView1.DataSource = ctrT.RangeGetByStatus(-1);
        }
        private bool isNew = false;
        private void btnSave_Click(object sender, EventArgs e)
        {
            int ret = 0;
            CtrTable ctrT = new CtrTable();
            if (txtRangeName.Text.Trim() == "")
            {
                MessageBox.Show("Bạn chưa nhập tên!");
                return;
            }
            if (isNew)
            {                
                ret=ctrT.RangeInsert(txtRangeName.Text, Convert.ToInt32(cbxStatus.SelectedValue));
                if (ret > 0)
                {
                    CtrAdmin ctra = new CtrAdmin();
                    ctra.LogInsert(Program.UserEntity.UserID, Program.UserEntity.UserName, 1, "Thêm mới khu vực \"" + txtRangeName.Text + "\"","Quản lý khu vực");
                    grbEdit.Text = "Sửa thông tin";                    
                    BindData();
                    DisplayControls(false);
                }
                else
                    if (ret == -1)
                    {
                        MessageBox.Show("Tên của khu vực đã tồn tại!");
                        txtRangeName.Focus();
                    }
                    else
                        MessageBox.Show("Có lỗi xảy ra!");
            }
            else
            {       
                ret=ctrT.RangeUpdate(txtRangeName.Text, Convert.ToInt32(cbxStatus.SelectedValue), rangeID);
                if (ret > 0)
                {
                    CtrAdmin ctra = new CtrAdmin();
                    ctra.LogInsert(Program.UserEntity.UserID, Program.UserEntity.UserName, 2, "Sửa khu vực \"" + txtRangeName.Text + "\"", "Quản lý khu vực");
                    BindData();
                    MessageBox.Show("Cập nhật thành công!");
                }
                else
                    if (ret == -1)
                    {
                        MessageBox.Show("Tên của khu vực đã tồn tại!");
                        txtRangeName.Focus();
                    }
                    else
                        MessageBox.Show("Có lỗi xảy ra!");
            }
        }
        private int rangeID = -1;
        private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (!isNew)
            {
                try
                {
                    var row = e.RowIndex;
                    txtRangeName.Text = dataGridView1.Rows[row].Cells["RangeName"].Value.ToString();
                    cbxStatus.SelectedValue = Convert.ToInt32(dataGridView1.Rows[row].Cells["Status"].Value);
                    rangeID = Convert.ToInt32(dataGridView1.Rows[row].Cells["RangeID"].Value);
                }
                catch (Exception loi)
                {
                    MessageBox.Show(loi.Message.ToString());
                }
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            grbEdit.Text = "Thêm khu vực mới";            
            txtRangeName.Text = "";
            cbxStatus.SelectedValue = 1;            
            rangeID = -1;
            DisplayControls(true);
            btnSave.Enabled = true;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            grbEdit.Text = "Sửa thông tin";
            DisplayControls(false);

            try
            {
                
                if (dataGridView1.SelectedCells.Count > 0)
                {
                    var row = dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex];
                    txtRangeName.Text = row.Cells["RangeName"].Value.ToString();
                    cbxStatus.SelectedValue = Convert.ToInt32(row.Cells["Status"].Value);
                    rangeID = Convert.ToInt32(row.Cells["RangeID"].Value);
                }
            }
            catch (Exception loi)
            {
                MessageBox.Show(loi.Message.ToString());
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (rangeID < 0)
            {
                MessageBox.Show("Bạn chưa chọn khu vực!", "Thông báo");
                return;
            }
            if (MessageBox.Show("Bạn có muốn xóa khu vực này không?", "Xác nhận", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {

                CtrTable ctrT = new CtrTable();
                int ret=ctrT.RangeDelete(rangeID);
                if (ret > 0)
                {
                    CtrAdmin ctra = new CtrAdmin();
                    ctra.LogInsert(Program.UserEntity.UserID, Program.UserEntity.UserName, 3, "xóa khu vực \"" + txtRangeName.Text + "\"", "Quản lý khu vực");
                    BindData();
                }
                else
                {
                    if (ret == -1)
                        MessageBox.Show("Bạn phải xóa hết các bàn tại khu vực này trước đã!", "Thông báo!");
                    else
                        MessageBox.Show("Có lỗi xảy ra!", "Thông báo!");
                }
            }
        }

        private void DisplayControls(bool m_new)
        {
            isNew = m_new;
            btnAdd.Enabled = !m_new;
            btnCancel.Enabled = m_new;
            btnDelete.Enabled = !m_new;

            if ((permission & (int)Config.Enum.Permission.Add) != (int)Config.Enum.Permission.Add)
                btnAdd.Enabled = false;

            if ((permission & (int)Config.Enum.Permission.Edit) != (int)Config.Enum.Permission.Edit)
                btnSave.Enabled = false;

            if ((permission & (int)Config.Enum.Permission.Delete) != (int)Config.Enum.Permission.Delete)
                btnDelete.Enabled = false;
        }
       
       
    }
}
